package com.syf.match;

import java.util.HashMap;
import java.util.Map;

/**
 * 策略工厂：
 *      一种策略 对应 一个MatchService(策略实现类 LimitPriceMatchServiceImpl)
 */
public class MatchServiceFactory {
    //一个策略 对应一个 MatchService
    private static Map<MatchStrategy,MatchService> matchServiceMap = new HashMap<>() ;


    /**
     * 给我们的策略工厂里面添加一个交易的实现类型
     * @param matchStrategy
     * @param matchService
     */
    public static  void addMatchService(MatchStrategy matchStrategy,MatchService matchService){
        matchServiceMap.put(matchStrategy ,matchService ) ; //(LIMIT_PRICE, LimitPriceMatchServiceImpl)
    }


    /**
     * 使用策略的名称--获取具体的实现类
     *      在 OrderEventHandler 调用某种交易策略 --策略对象.match()
     * @param matchStrategy
     * @return
     */
    public static MatchService getMatchService(MatchStrategy matchStrategy){
        return matchServiceMap.get(matchStrategy) ;
    }
}
